package com.zhaotianhao.rentingservice.config;

import com.netflix.loadbalancer.*;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RibbonConfig {

    @Bean
    @LoadBalanced//实现负载均衡
    RestTemplate restTemplate(){
        return new RestTemplate();
    }

    /**
     * 配置负载均衡算法
     * @return
     */
    @Bean
    public IRule iRule(){
        // 随机
        return new RandomRule();
        // 轮询
        //return new RoundRobinRule();
        // 重试
        //return new RetryRule();
        // 空闲(高并发时)
        //return new BestAvailableRule();
        // 权重
        //return new WeightedResponseTimeRule();
        // 先过滤清单 再轮询 (也就是 在进行调用前 先更新可用服务清单 在通过轮询算法调用)
        /*return new PredicateBasedRule() {
            @Override
            public AbstractServerPredicate getPredicate() {
                return null;
            }
        };*/
    }
}
